from typing import List


class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x:x[0])
        # 栈
        st=[]
        for x in intervals:
            # 当前为空 或者 栈最后一个的右区间 < 当前遍历的左区间--》直接添加
            if not st or st[-1][1] < x[0]:
                st.append(x)
            else:
                # 取出栈顶进行合并
                cur=st.pop()
                st.append([cur[0],max(x[1],cur[1])])
        return st

